## API Report File for "@backstage/plugin-catalog-backend-module-gitlab"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
import { CatalogProcessor } from '@backstage/plugin-catalog-node';
import { CatalogProcessorEmit } from '@backstage/plugin-catalog-node';
import { Config } from '@backstage/config';
import { EntityProvider } from '@backstage/plugin-catalog-node';
import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
import { GitLabIntegrationConfig } from '@backstage/integration';
import { GroupEntity } from '@backstage/catalog-model';
import { LocationSpec } from '@backstage/plugin-catalog-node';
import { Logger } from 'winston';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { TaskRunner } from '@backstage/backend-tasks';
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
import { UserEntity } from '@backstage/catalog-model';

// @public
export class GitlabDiscoveryEntityProvider implements EntityProvider {
  // (undocumented)
  connect(connection: EntityProviderConnection): Promise<void>;
  // (undocumented)
  static fromConfig(
    config: Config,
    options: {
      logger: Logger;
      schedule?: TaskRunner;
      scheduler?: PluginTaskScheduler;
    },
  ): GitlabDiscoveryEntityProvider[];
  // (undocumented)
  getProviderName(): string;
  // (undocumented)
  refresh(logger: Logger): Promise<void>;
}

// @public
export class GitLabDiscoveryProcessor implements CatalogProcessor {
  // (undocumented)
  static fromConfig(
    config: Config,
    options: {
      logger: Logger;
      skipReposWithoutExactFileMatch?: boolean;
      skipForkedRepos?: boolean;
    },
  ): GitLabDiscoveryProcessor;
  // (undocumented)
  getProcessorName(): string;
  // (undocumented)
  readLocation(
    location: LocationSpec,
    _optional: boolean,
    emit: CatalogProcessorEmit,
  ): Promise<boolean>;
}

// @public
export type GitLabGroup = {
  id: number;
  name: string;
  full_path: string;
  description?: string;
  parent_id?: number;
};

// @public (undocumented)
export type GitLabGroupSamlIdentity = {
  extern_uid: string;
};

// @public
export class GitlabOrgDiscoveryEntityProvider implements EntityProvider {
  // (undocumented)
  connect(connection: EntityProviderConnection): Promise<void>;
  // (undocumented)
  static fromConfig(
    config: Config,
    options: {
      logger: Logger;
      schedule?: TaskRunner;
      scheduler?: PluginTaskScheduler;
      userTransformer?: UserTransformer;
      groupEntitiesTransformer?: GroupTransformer;
      groupNameTransformer?: GroupNameTransformer;
    },
  ): GitlabOrgDiscoveryEntityProvider[];
  // (undocumented)
  getProviderName(): string;
}

// @public
export type GitlabProviderConfig = {
  host: string;
  group: string;
  id: string;
  branch?: string;
  fallbackBranch: string;
  catalogFile: string;
  projectPattern: RegExp;
  userPattern: RegExp;
  groupPattern: RegExp;
  orgEnabled?: boolean;
  schedule?: TaskScheduleDefinition;
  skipForkedRepos?: boolean;
};

// @public
export type GitLabUser = {
  id: number;
  username: string;
  email?: string;
  name: string;
  state: string;
  web_url: string;
  avatar_url: string;
  groups?: GitLabGroup[];
  group_saml_identity?: GitLabGroupSamlIdentity;
};

// @public
export type GroupNameTransformer = (
  options: GroupNameTransformerOptions,
) => string;

// @public
export interface GroupNameTransformerOptions {
  // (undocumented)
  group: GitLabGroup;
  // (undocumented)
  providerConfig: GitlabProviderConfig;
}

// @public
export type GroupTransformer = (
  options: GroupTransformerOptions,
) => GroupEntity[];

// @public
export interface GroupTransformerOptions {
  // (undocumented)
  groupNameTransformer: GroupNameTransformer;
  // (undocumented)
  groups: GitLabGroup[];
  // (undocumented)
  providerConfig: GitlabProviderConfig;
}

// @public
export type UserTransformer = (options: UserTransformerOptions) => UserEntity;

// @public
export interface UserTransformerOptions {
  // (undocumented)
  groupNameTransformer: GroupNameTransformer;
  // (undocumented)
  integrationConfig: GitLabIntegrationConfig;
  // (undocumented)
  providerConfig: GitlabProviderConfig;
  // (undocumented)
  user: GitLabUser;
}
```
